package sdk.webview.fmc.com.fmcsdk.util;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.preference.PreferenceManager;
import android.support.v4.content.FileProvider;
import android.text.TextUtils;
import android.widget.Toast;


import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import sdk.webview.fmc.com.fmcsdk.R;
import sdk.webview.fmc.com.fmcsdk.app.AppManager;
import sdk.webview.fmc.com.fmcsdk.view.GPSCustomDialog;

/**
 * Created by ydm on 2017/12/16.
 */

public class UpdateApkManager {
//    private String apkUrl="";
//    private String versionId="";
//    private Activity mContext;
//    private final int DOWN_NOSDCARD = 0;
//    private final int DOWN_OVER = 2;
//    private String versionName = "";
//    // 下载包保存路径
//    private String savePath = "";
//    // apk保存完整路径
//    private String apkFilePath = "";
//    // 临时下载文件路径
//    private String tmpFilePath = "";
//    // 下载线程
//    private Thread downLoadThread;
//    private Handler mHandler = new Handler() {
//        @Override
//        public void handleMessage(Message msg) {
//            switch (msg.what) {
//                case DOWN_OVER:
//                    installApk();
//                    break;
//                case DOWN_NOSDCARD:
//                    ToastUtils.showShort(mContext,mContext.getResources().getString(R.string.msg_not_download_apk));
//                    break;
//            }
//        };
//    };
//
//
//
//    public void downloadApk(Activity activity,String apkUrl,String versionId ) {
//        this.mContext = activity;
//        this.apkUrl = apkUrl;
//        this.versionId = versionId;
//        downLoadThread = new Thread(mdownApkRunnable);
//        downLoadThread.start();
//    }
//
//    private Runnable mdownApkRunnable = new Runnable() {
//        @Override
//        public void run() {
//            try {
//                String version = PreferenceManager.getDefaultSharedPreferences(mContext).getString(Constant.FMC_VERSION_TIME, "");
//                String apkName = PreferenceManager.getDefaultSharedPreferences(mContext).getString(Constant.APP_NAME, "fmc")+"_"+versionId+".apk";
//                String tmpApk = PreferenceManager.getDefaultSharedPreferences(mContext).getString(Constant.APP_NAME, "fmc")+"_"+versionId+".tmp";
//                // 判断是否挂载了SD卡
//                String storageState = Environment.getExternalStorageState();
//                if (storageState.equals(Environment.MEDIA_MOUNTED)) {
//                    String storePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/fmc/" + PreferenceManager.getDefaultSharedPreferences(mContext).getString(Constant.APP_NAME, "fmsdk");
//                    savePath = storePath+Constant.APKPATH;
//                    File file = new File(savePath);
//                    if (!file.exists()) {
//                        file.mkdirs();
//                    }
//                    apkFilePath = savePath + "/" + apkName;
//                    tmpFilePath = savePath + "/" + tmpApk;
//                }
//
//                // 没有挂载SD卡，无法下载文件
//                if (apkFilePath == null || apkFilePath == "") {
//                    mHandler.sendEmptyMessage(DOWN_NOSDCARD);
//                    return;
//                }
//
//                File ApkFile = new File(apkFilePath);
//
//                // 是否已下载更新文件
//                if (ApkFile.exists()) {
//                    if (TextUtils.isEmpty(version)) return;
//                    //如果已存在的apk是最新的包那就提示安装，否则删除掉
//                    if (DateUtil.dateToStamp(version)<DateUtil.dateToStamp(versionId)) {
//                        mHandler.sendEmptyMessage(DOWN_OVER);
//                        return;
//                    }else {
//                        ApkFile.delete();
//                    }
//                }
//
//                // 输出临时下载文件
//                File tmpFile = new File(tmpFilePath);
//                FileOutputStream fos = new FileOutputStream(tmpFile);
//
//                URL url = new URL(apkUrl);
//                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//                if (apkUrl.startsWith("https")) {
//                    String appName = (String) Utility.getMetaData(mContext, Constant.APP_NAME);
//                    String isHttps = (String) Utility.getMetaData(mContext, Constant.IS_HTTPS_TEST);
//                    if (Constant.APP_NAME_BAQ.equals(appName)||isHttps.equals("fmc_true")) {
//                        HttpsManager.setHttpsConnection(conn, mContext);
//                    }
//                }
//                conn .setRequestProperty("Accept-Encoding", "identity");
//                conn.connect();
//                int length = conn.getContentLength();
//                InputStream is = conn.getInputStream();
//                int count = 0;
//                byte buf[] = new byte[1024];
//
//                do {
//                    int numread = is.read(buf);
//                    count += numread;
//
//                    if (numread <= 0) {
//                        // 下载完成 - 将临时下载文件转成APK文件
//                        if (tmpFile.renameTo(ApkFile)) {
//                            // 通知安装
//                            mHandler.sendEmptyMessage(DOWN_OVER);
//                        }
//                        break;
//                    }
//                    fos.write(buf, 0, numread);
//                } while (true);
//
//                fos.close();
//                is.close();
//            } catch (MalformedURLException e) {
//
//            } catch (IOException e) {
//                XLog.i("APK下载失败"+e);
//            }
//
//        }
//    };
//
//    /**
//     * 安装apk
//     */
//    File apkfile;
//    private void installApk() {
//        if (!mContext.isFinishing()) {
//            GPSCustomDialog customDialog = new GPSCustomDialog(mContext, mContext.getString(R.string.update_message));
//            customDialog.setCancelable(false);
//            customDialog.show();
//            customDialog.setClicklistener(new GPSCustomDialog.ClickListenerInterface() {
//                @Override
//                public void doConfirm() {
//
//                    apkfile = new File(apkFilePath);
//                    if (!apkfile.exists()) {
//                        return;
//                    }
//                    Intent i = new Intent(Intent.ACTION_VIEW);
//                    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
////                    i.setDataAndType(Uri.parse("file://" + apkfile.toString()), "application/vnd.android.package-archive");
//
//                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
//                        Intent intent = new Intent();
//                        intent.setAction(Intent.ACTION_VIEW);
//                        intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
//                        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//                        XLog.i("package:"+mContext.getApplication().getPackageName());
//                        Uri contentUri = FileProvider.getUriForFile(mContext, mContext.getApplication().getPackageName()+ ".fileprovider", apkfile);
//                        intent.setDataAndType(contentUri, "application/vnd.android.package-archive");
//                        mContext.startActivity(intent);
//                    }else {
//                        i.setDataAndType(Uri.parse("file://" + apkfile.toString()), "application/vnd.android.package-archive");
//                    }
//
//                    mContext.startActivity(i);
//                    mContext.finish();
//                }
//
//                @Override
//                public void doCancel() {
//                    AppManager.getAppManager().finishAllActivity();
//                }
//            });
//
//        }
//
//    }

}
